using System;
using System.Collections.Specialized;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


namespace Edge.Common.Web.Navigation
{

    public enum Action
    {
        View = 1,
        Edit = 2,
        New = 3,
        Delete = 4
    }

    /// <summary>
    /// Summary description for INavigationService
    /// </summary>
    public interface INavigationService
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        bool IsProvideUrl(object obj);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="action"></param>
        /// <returns></returns>
        string GetUrl(object obj, Action action);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <param name="id"></param>
        /// <param name="action"></param>
        /// <returns></returns>
        string GetUrl(Type type, object id, Action action);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        string GetCreateUrl(Type type);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        string GetListUrl(Type type);
        //        /// <summary>
        //        /// 
        //        /// </summary>
        //        /// <param name="obj"></param>
        //        /// <returns></returns>
        //        string GetListUrlForObject(object obj);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="url"></param>
        /// <param name="removeParam"></param>
        /// <returns></returns>
        string GetCurrentQueryString(UrlBuilder url, String[] removeParam);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="queryString"></param>
        /// <param name="removeParam"></param>
        /// <returns></returns>
        string GetCurrentQueryString(NameValueCollection queryString, String[] removeParam);
    }

}